perm filename STTGET[SS,SYS] blob
sn#289744 filedate 1977-06-23 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE STTGET
C00011 00003 INTS1: MOVE T,STTPTR
C00013 ENDMK
C⊗;
TITLE STTGET
SUBTTL STATISTICS GATHERING SERVICE
NBUFS←←=20 ; NUMBER OF BUFFERS
INIBYT←←(=31+1)/2 ;31 BYTES PER JOB 18 BITS PER BYTE
;JOB TABLE POINTERS FOR INTIALIZING STATS
JOBN←←400222
JBTSTS←←400210
JNA←←40000
SWP←←2000
JBTPAG←←400324
JOBQUE←←400231
JBTSIN←←400307
JBTGLU←←400310
SPWGO←←400213
SP2GO←←400230
JOBNAM←←400225
JBTSWP←←400212
DEFINE XD(A,B)
<A←←B>
;STAT OP-CODES
XD CSZSTA,000000 ;BYTE(1)0(2)0(9)CORE PAGE COUNT(6)J#
XD NAMSTA,400000 ;BYTE(1)1(5)0(6)UNUSED(6)J# JOB NAME FOLLOWS IN 2 BYTES
XD QUESTA,410000 ;BYTE(1)1(5)1(6)QUEUE CODE(6)J#
XD SINSTA,420000 ;BYTE(1)1(5)2(6)JBTSIN BIT #(6)J#
XD SEGSTA,430000 ;BYTE(1)1(5)3(6)SEGMENT #(6)J#
XD SPWSTA,440000 ;BYTE(1)1(5)4(6)0-17:TICS OF SPW, 77:SPW OFF(6)J#
XD GLUSTA,450000 ;BYTE(1)1(5)5(6)JBTGLU COUNT(6)J#
XD LOKSTA,460000 ;BYTE(1)1(5)6(6)0:UNLOCKING, 1:LOCKING, 2:LOKSWP(6)J#
XD FITSTA,470000 ;BYTE(1)1(5)7(6)1:WANT TO LOCK(6)J# ;FIT←J
XD HPGSTA,500000 ;BYTE(1)1(5)10(6)UNUSED(6)J# ;NEXT BYTE IS # HI PAGES
XD JOBSTA,510000 ;BYTE(1)1(5)11(6)UNUSED(6)J# ;NEXT JOB TO RUN
XD TIMSTA,520000 ;BYTE(1)1(5)12(12)TIME ;HIGH ORDER TIME.
;NEXT BYTE IS LOW ORDER TIME
XD SWPSTA,530000 ;BYTE(1)1(5)13(6)1:OUT, 0:IN (6)J# ;SWAP OP STARTS
;2 - FORCE SET, 3-CONSIDERED FOR SWAPOUT
;4 - DEADLOCKED, 5 - RESCNIN, 6 - NOFIT
XD CORSTA,540000 ;BYTE(1)1(5)14(6)UNUSED(6)UNUSED;NEXT BYTES ARE:
;LOFREE, HIFREE, HIUSED, LOKTOT, CORMX, CORHMX
XD MARK,770000 ;BYTE(1)1(5)37(6)CODE(6)J# ;MARK
;CODE: 0=PRINT JOB INFO, 1=CLEAR INIT
STAT←←400241 ; ADDRESS OF STATISTICS TABLE
STTLEN←←400243 ; LENGTH OF SUCH
STTPTR←←400244 ; ADDRESS OF STATISTICS POINTER
STTNUM←←400245 ; ADDRESS OF WRAP-AROUND COUNTER
T←←12
T1←←13
T2←←14
T3←15
T4←16
J←17
EXTERNAL JOBAPR
START: RESET
MOVSI T,376001 ;128K CORE STARTING AT BOTTOM (WRITE PROTECTED)
SETPR2 T, ;SET IT AS UPPER
JRST [ OUTSTR[ASCIZ/SETPR2 FAILED!
/]
EXIT]
SKIPN STAT
JRST [ OUTSTR[ASCIZ/SORRY, THIS SYSTEM DOESN'T HAVE ANY STATISTICS INFO!
/]
EXIT]
INIT 1,17
SIXBIT /DSK/
0
JRST [ OUTSTR [ASCIZ ⊗CAN'T INIT DISK
⊗]
EXIT]
SETZM EFILE+3
HLLZS EFILE+1
SETZM EFILE+2
ENTER 1,EFILE
JRST [ OUTSTR [ASCIZ ⊗CAN'T ENTER FILE
⊗]
EXIT]
HRRZI T,INTS
MOVEM T,JOBAPR
SETZM NBUFO
MOVEI T,BUFF
MOVEM T,IPTR
MOVEM T,OPTR
SETZM LOSE
FOR @! I IN(JBTSTS,JBTPAG,JOBQUE,JBTSIN,JBTGLU,SPWGO,SP2GO,JOBNAM,JBTSWP)
< MOVE T,I
ADDI T,400000
HRRM T,$!I
>
SETOM FIRST#
TRYINI: MOVE T,JOBN
IMULI T,INIBYT
ADD T,JOBFF↑ ;(+1 FOR OUR JOB # MAKES T DESIRED LAST ADDRESS)
MOVE T1,T
CORE T,
JRST [ OUTSTR[ASCIZ/CAN'T GET CORE FOR INITIALIZATION!
/]
EXIT
JRST TRYINI]
MOVE T,JOBFF
SETZM (T)
HRL T,T
ADDI T,1
BLT T,(T1)
PJOB T1,
MOVEM T1,JOB#
HRLZM T1,@JOBFF
LOCK
MOVEI T2,1
INTENB T2,
IWKMSK [1]
CLKINT 1 ;EVERY TIC
IWAIT ;WAIT FOR INITIALIZATION TO FINISH
MOVN T,JOBN
IMULI T,INIBYT
SUBI T,1 ;ONE MORE WORD FOR JOB NUMBER
HRLZ T,T
HRR T,JOBFF
SUBI T,1
SETZ T1,
OUTPUT 1,T
LOOP: INCHRS T
JRST LOOP0
EXIT
LOOP0: MTAPE 1,['GODMOD'
17] ;MAKE SURE FILE IS UPDATED
IWAIT
LOOP1: SKIPG T,NBUFO
JRST LOOP
SOS NBUFO
CAILE T,NBUFS
JRST [ OUTCHR ["X"]
OUTPUT 1,[IOWD 200,MONES↔0]
JRST LOOP2]
HRRZ T,OPTR
SUBI T,1
HRRM T,OIOWD
OUTPUT 1,OIOWD
LOOP2: MOVEI T,200
ADDB T,OPTR
CAIGE T,BUFF+NBUFS*200
JRST LOOP1
MOVEI T,BUFF
MOVEM T,OPTR
JRST LOOP1
INTS: SKIPN FIRST
JRST INTS1
SETZM FIRST
MOVE T2,JOBFF
HRLI T2,(<POINT 18,0,17>);SKIP OVER OUR JOB #
MOVEI J,1
INI0:
$JBTSTS:MOVE T1,JBTSTS(J)
CAME J,JOB ;SKIP US
TLNN T1,JNA
JRST INI1
MOVEI T,SWPSTA(J) ;ASSUME SWAP IN
TLNE T1,SWP
MOVEI T,SWPSTA+100(J) ;NOPE, SWAP OUT
IDPB T,T2 ;SEND STATE OF SWAPPAGE
MOVEI T,HPGSTA(J) ;SEND HI PAGE COUNT NEXT
IDPB T,T2
TLNE T1,SWP
TDZA T,T
$JBTPAG:HRRZ T,JBTPAG(J)
IDPB T,T2 ;HI PAGE COUNT
HLRZ T,@$JBTPAG ;GET CORE SIZE
TLNE T1,SWP ;SWAPPED OUT?
LDB T,$JBTSWP ;GET IMGIN INSTEAD.
LSH T,6
TRO T,CSZSTA(J)
IDPB T,T2
$JBTSIN:HLLZ T,JBTSIN(J)
JRST INI2
$JBTSWP:POINT 9,JBTSWP(J),35 ;IMGIN
INI3: MOVN T3,T1
MOVSI T4,400000
LSH T4,(T3)
TDZ T,T4
LSH T1,6
TRO T1,SINSTA(J)
IDPB T1,T2
INI2: JFFO T,INI3
$JBTGLU:MOVE T,JBTGLU(J)
ANDI T,77
LSH T,6
TRO T,GLUSTA(J)
IDPB T,T2
$SPWGO: SKIPN SPWGO(J)
JRST INI4
LDB T,[POINT 12,@$SPWGO,23]
ANDI T,7700
TRO T,SPWSTA(J)
IDPB T,T2
INI4:
$SP2GO: SKIPN SP2GO(J)
JRST INI5
LDB T,[POINT 12,@$SP2GO,23]
ANDI T,7700
TRO T,SPWSTA+4000(J)
IDPB T,T2
INI5: HRRZ T,@$JBTSTS
ANDI T,77
LSH T,6
TRO T,SEGSTA(J)
IDPB T,T2
MOVEI T,NAMSTA(J)
IDPB T,T2
$JOBNAM:MOVS T,JOBNAM(J)
IDPB T,T2
HLRZ T,T
IDPB T,T2
$JOBQUE:MOVM T,JOBQUE(J)
ANDI T,77
LSH T,6
TRO T,QUESTA(J)
IDPB T,T2
MOVEI T,MARK(J)
IDPB T,T2 ;MAKE IT PRINT NOW
INI1: CAMGE J,JOBN
AOJA J,INI0
MOVEI T,MARK+100 ;CLEAR INIT
IDPB T,T2
;INIT POINTERS
MOVE T,STTPTR
MOVE T,400000(T)
HRRZI T,1(T)
SUB T,STAT
IORI T,177
SUBI T,177 ;REL PNTR TO 200 WD BLK CONTAINING CURRENT PNTR
ADD T,STAT ;CORRESPONDING ADDR IN SYSTEM
MOVEM T,STTPT
ADDI T,200
MOVE T1,STAT
ADD T1,STTLEN
MOVEM T1,STTEND
SETZM STTN
CAMGE T,T1
JRST INTS4
AOS STTN
MOVE T,STAT
INTS4: MOVEM T,STTYET
MOVE T,STTNUM
MOVE T,400000(T)
ADDM T,STTN
;INIT DONE
MOVEI T,1
INTGEN T, ;TELL HIM TO GO
DISMIS
INTS1: MOVE T,STTPTR
HRRZ T,400000(T)
ADDI T,1
CAMGE T,STTYET
DISMIS
HRR T,STTNUM
MOVE T,400000(T)
CAMGE T,STTN
DISMIS
CAME T,STTN
AOS LOSE
HRR T,STTPT
HRLI T,400000(T)
HRR T,IPTR
HRRZ T1,IPTR
ADDI T1,177
BLT T,(T1)
MOVEI T,200
ADDB T,IPTR
CAIGE T,BUFF+NBUFS*200
JRST INTS2
MOVEI T,BUFF
MOVEM T,IPTR
INTS2: AOS NBUFO
MOVEI T,1
INTGEN T,
MOVE T,STTYET
MOVEM T,STTPT
ADDI T,200
CAMGE T,STTEND
JRST INTS3
AOS STTN
MOVE T,STAT
INTS3: MOVEM T,STTYET
JRST INTS1
; DATA STORAGE . . .
MONES: -1
-1
-1
-1
LOSE: 0
STTEND: 0 ; FIRST ADDRESS BEYOND TABLE
STTN: 0 ; TRIGGER VALUE OF WRAP-AROUND POINTER
STTPT: 0 ; LAST POINTER TO 200-WD BLOCK
STTYET: 0 ; PLACE WHERE POINTER HAS TO BE TO TRIGGER TRANSFER OF 200-WDS
NBUFO: 0 ; COUNTER OF NUMBER OF FULL BUFFERS
IPTR: BUFF ; LOAD-UP POINTER
OPTR: BUFF ; EMPTY POINTER
BUFF: BLOCK 200*NBUFS
OIOWD: IOWD 200,BUFF
0
EFILE: SIXBIT /STATS/
SIXBIT /DAT/
0
0
END START